package com.fira.edu.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fira.common.annotation.Excel;
import com.fira.common.core.domain.saas.base.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 学生课时信息对象 edu_student_course
 * 
 * @author wuzhenggui
 * @date 2021-10-11
 */
public class EduStudentCourse extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    private String id;

    /**  */
    @Excel(name = "")
    private String tenantId;

    /**  */
    @Excel(name = "")
    private String studentId;

    /**  */
    @Excel(name = "课程")
//    @NotBlank(message = "所选课程不能为空")
    private String courseId;

    /** 报课类型 */
    @Excel(name = "报课类型")
    @NotBlank(message = "报课类型不能为空")
    private String signUpType;

    /** 收费方式 */
    @Excel(name = "收费方式")
    @NotBlank(message = "收费方式不能为空")
    private String chargeType;

    /** 套餐类型 */
    @Excel(name = "套餐ID")
    @NotBlank(message = "套餐不能为空")
    private String packageId;

    /**  */
    @Excel(name = "班级")
//    @NotBlank(message = "班级不能为空")
    private String classId;

    /** 有效期开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startPeriodTime;

    /** 有效期结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endPeriodTime;

    /** 购买课时 */
    @Excel(name = "购买课时")
//    @NotBlank(message = "购买课时不能为空")
    private Integer buyClassHours;

    /** 赠送课时 */
    @Excel(name = "赠送课时")
    private Integer giveClassHours;

    /** 课程价格 */
    @Excel(name = "课程价格")
    private BigDecimal classPrice;

    /** 优惠方式(1:优惠,2:折扣) */
    @Excel(name = "优惠方式(1:优惠,2:折扣)")
    private String discountType;

    /** 优惠金额 */
    @Excel(name = "优惠金额")
    private BigDecimal discountAmount;

    /** 总课时 */
    @Excel(name = "总课时")
    private Integer totalClassHours;

    /** 剩余课时 */
    @Excel(name = "剩余课时")
    private Integer unuseClassHours;

    /** 总金额 */
    @Excel(name = "总金额")
    private BigDecimal totalAmount;

    /** 数据状态(0:失效,1:有效) */
    @Excel(name = "数据状态(0:失效,1:有效)")
    private String status;

    private String courseName;  //课程名称
    private String courseType;  //课程类型
    private String className;   //班级名称

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }
    public void setTenantId(String tenantId) 
    {
        this.tenantId = tenantId;
    }

    public String getTenantId() 
    {
        return tenantId;
    }
    public void setStudentId(String studentId)
    {
        this.studentId = studentId;
    }

    public String getStudentId()
    {
        return studentId;
    }
    public void setCourseId(String courseId)
    {
        this.courseId = courseId;
    }

    public String getCourseId()
    {
        return courseId;
    }
    public void setSignUpType(String signUpType) 
    {
        this.signUpType = signUpType;
    }

    public String getSignUpType() 
    {
        return signUpType;
    }
    public void setChargeType(String chargeType) 
    {
        this.chargeType = chargeType;
    }

    public String getChargeType() 
    {
        return chargeType;
    }
    public void setPackageId(String packageId){
        this.packageId = packageId;
    }

    public String getPackageId()
    {
        return packageId;
    }
    public void setClassId(String classId)
    {
        this.classId = classId;
    }

    public String getClassId()
    {
        return classId;
    }
    public void setStartPeriodTime(Date startPeriodTime) 
    {
        this.startPeriodTime = startPeriodTime;
    }

    public Date getStartPeriodTime() 
    {
        return startPeriodTime;
    }
    public void setEndPeriodTime(Date endPeriodTime) 
    {
        this.endPeriodTime = endPeriodTime;
    }

    public Date getEndPeriodTime() 
    {
        return endPeriodTime;
    }
    public void setBuyClassHours(Integer buyClassHours) 
    {
        this.buyClassHours = buyClassHours;
    }

    public Integer getBuyClassHours() 
    {
        return buyClassHours;
    }
    public void setGiveClassHours(Integer giveClassHours) 
    {
        this.giveClassHours = giveClassHours;
    }

    public Integer getGiveClassHours() 
    {
        return giveClassHours;
    }
    public void setClassPrice(BigDecimal classPrice) 
    {
        this.classPrice = classPrice;
    }

    public BigDecimal getClassPrice() 
    {
        return classPrice;
    }
    public void setDiscountType(String discountType) 
    {
        this.discountType = discountType;
    }

    public String getDiscountType() 
    {
        return discountType;
    }
    public void setDiscountAmount(BigDecimal discountAmount) 
    {
        this.discountAmount = discountAmount;
    }

    public BigDecimal getDiscountAmount() 
    {
        return discountAmount;
    }
    public void setTotalClassHours(Integer totalClassHours) 
    {
        this.totalClassHours = totalClassHours;
    }

    public Integer getTotalClassHours() 
    {
        return totalClassHours;
    }
    public void setUnuseClassHours(Integer unuseClassHours) 
    {
        this.unuseClassHours = unuseClassHours;
    }

    public Integer getUnuseClassHours() 
    {
        return unuseClassHours;
    }
    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getCourseType() {
        return courseType;
    }

    public void setCourseType(String courseType) {
        this.courseType = courseType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("tenantId", getTenantId())
            .append("studentId", getStudentId())
            .append("courseId", getCourseId())
            .append("signUpType", getSignUpType())
            .append("chargeType", getChargeType())
            .append("packageId", getPackageId())
            .append("classId", getClassId())
            .append("startPeriodTime", getStartPeriodTime())
            .append("endPeriodTime", getEndPeriodTime())
            .append("buyClassHours", getBuyClassHours())
            .append("giveClassHours", getGiveClassHours())
            .append("classPrice", getClassPrice())
            .append("discountType", getDiscountType())
            .append("discountAmount", getDiscountAmount())
            .append("totalClassHours", getTotalClassHours())
            .append("unuseClassHours", getUnuseClassHours())
            .append("totalAmount", getTotalAmount())
            .append("status", getStatus())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
